The popularity of server virtualization in computing environments, which can include storage virtualization, has resulted in a rapid rise in cloud-based data centers. In a data center, workloads (virtual machines, containers or bare metal) are deployed by the compute and storage orchestrators based on various heuristics. Typically, these heuristics include server resources such as vCPU, memory usage, etc. Such heuristics are also often based only on the instantaneous health of the compute servers. Other heuristics include deploying a workload based on application affinity, selection of compute nodes closer to a storage bank, etc. The problem with the compute or storage orchestrators (such as OpenStack, VMware, and the like), with respect to their scheduling decisions, is that they are typically “blind” to the network state.
Deploying a workload below a top of the rack (ToR) switch that is not going to be able to satisfy its network requirement is not useful. Many of the algorithms today take only the instantaneous statistics of the network into account for computing the health score or for scheduling the workloads. The schedulers do not take into account various network or fabric problems that can affect performance of the workload as it gets scheduled and deployed into the compute environment. Current network health algorithms use static weights and other static coefficients in their health computation, which can produce less than accurate health evaluations. This inaccuracy weakens the ability of the algorithms to schedule workload as efficiently as possible and results in scheduling decisions that are less than optimal.